package com.zhang.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtil {

    private static final String KEY = "zhang"; //将密钥提出来

    //接收业务数据,生成token并返回
    public static String genToken(Map<String, Object> claims) {  //my：Map类型的参数用来封装业务数据
        return JWT.create() //my：返回的就是生成的token
                .withClaim("claims", claims)  //my：将Controller层的数据传过来，加到claims中
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 )) //my：设置token过期时间：1h
                .sign(Algorithm.HMAC256(KEY)); //my：设置算法和密钥
    }

    //接收token,验证token,并返回业务数据
    public static Map<String, Object> parseToken(String token) {
        return JWT.require(Algorithm.HMAC256(KEY))
                .build()
                .verify(token)
                .getClaim("claims") //得到的业务数据，return回去
                .asMap();
    }
}
